package mapper;

import entity.Dept;
import org.apache.ibatis.annotations.Many;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @author JoeZhou
 */
public interface DeptMapper {

    /**
     * 查询所有部门，同时查出部门所有员工信息
     *
     * @return 所有部门及其员工信息
     */
    List<Dept> selectWithEmpsByJoin();

    /**
     * 查询所有部门，同时查出部门所有员工信息
     *
     * @return 所有部门及其员工信息
     */
    List<Dept> selectWithEmpsBySelect();

    /**
     * 查询所有部门，同时查出部门所有员工信息
     *
     * @return 所有部门及其员工信息
     */
    @Select("select d.deptno, d.dname, d.loc FROM mybatis.dept d")
    @Results({
            @Result(column = "deptno", property = "deptno", id = true),
            @Result(column = "deptno", property = "emps",
                    many = @Many(select = "com.joezhou.mapper.EmpMapper.selectByDeptno")
            )
    })
    List<Dept> selectWithEmpsByMany();
}